home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FM Towns: Free Software Collection 11
/
FM Towns Free Software Collection 11.iso
/
t_os
/
tool
/
guiremix
/
guiremix.doc
next >
Wrap
Text File
|
1995-08-05
|
65KB
|
1,553 lines
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■
□ TM □
■ GUI Evolution REMIX ■
□ □
■ Copyright(C) by NOI’z(高橋英彦) ■
□ □
■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■□■
【 作 品 名 】 GUI Evolution REMIX
【 作 者 名 】 NOI’z(高橋英彦)
【 必要メモリ 】 最低3メガ必要
推奨4~6M(このくらいあった方がよい)
【必要オプション】 F-BASIC386V2.1L10以上
F-BASIC/WINには対応してません(^^;;
【 そ の 他 】 F-BASIC386 V2.1L20推奨
486機推奨
【 動作確認 】 FMTOWNSII MX20 (私の)
FMTOWNSII UX20 (私の)
FMTOWNSII HA540 (こたつ猫の)
FMTOWNSII HR20 (IKKANの)
FMTOWNSII HC540 (茶川龍之介の)
FMTOWNSII UR20 (茶川龍之介の)
FMTOWNSII CX20 (Townes.Einsyutin.の)
○5回記念でR(T^T)
フー。このプログラム編集するのもようやく5回目だなぁ!
未発表の[BASIC GUI SYSTEM](フリコレ8の前のやつ)を除けば
、結構このGUIシリーズも結構続けたもんだ。
たしかあの日は関西大震災の次の日(1・28発売)。
もしかしたら、次の日に発売される◎h!FMTOWNSを楽しみにしてお亡くなり
になった人もいたのではないでしょうか・・・(ご冥福をお祈りいたします)もし私
があの地震で死んでしまったら↑のことでそこの地縛霊となることでしょ~\(゚ロ\)
(苦笑&被災者の皆さんすいません。)
通信でしりあった友達も兵庫県に住んでいて、メールをだしても帰ってこなくてもう
本当に心配しました。まぁ実は地震の直後から志賀高原にスキーにいっていたんだっ
て(ヨカッタヨカッタ(T-T))。その人は兵庫県中部の人だったので揺れは凄かったけど大丈
夫だったと話していました。う~んこれが噂のデジタル体験談(←全然噂になってい
ないという噂も・・・!?)
と、さっきから一人突っ込みしている私ですが・・・え?、なに?、早く本題に入れ
?・・・まぁまぁ焦らずに!これはドキュメントファイルの容量を増やして凄いプロ
グラムに見せかけよう((^笑^;) \(ヲ)バキッ)・・・もとい、前置きです、前置
き!
では本題に入りましょう。まずは何をするかだ!
もし貴方がキーボードをうまく打てないような初心者だったとします。本当にそのよ
うな初心者の方は・・・う~んどうしよう。
多くのパソコンを持っていない人々の考えはパソコンは難しいものであったり、ファ
ミコンではできないゲームをやってみたかったりと考えています。でもTOWNSの
場合、比較的マウスをカチカチすれば何かしら出来てしまいます。ところが、プログ
ラムを作る人は、そんなふうになってないで、ただ真っ暗な画面の中に文字が出てて
、「なんたらを打ち込んでください」と書いたほうが楽なのです。ということで結局
↑の人々の考えを強調させてしまったり、初心者はなにをやっていいのかPreas
e Help me状態(ミンナアリガトー(^^;;)に陥ってしまったりしてしまい
ます。
そこで考えだされたのがGUI方式です。
GUIとは画面に分かりやすいボタンや、絵付きのボタンを画面にいっぱい置いてお
いて、誰が見てもこのボタンはこう!、このボタンはこう!などと感心させてしまう
・・・ちょっとちがうけど、マウスを使って操作を簡単にしてしまおうなどというも
ののことを言います。
でも、そのGUIを使う人は簡単快適なんだけど、作る側にとっては非っ常ぉ~に面
倒なんですね。(そのGUIプログラムを作る物があれば普通のプログラムより簡単
になるんだけど・・・)で、そのプログラムを作ることを少しでも簡単にしてあげよ
うというのがこの[GUI Evolution]なのです。
と、やっと本題に入れて一安心の私ですが、ちょっとまて!、プログラムを作る?、
俺はゲームをしたいんだぞ?というひとは、残念ながらここでお別れです(ここまで
読ましといてそれはないでしょ~(T_T)・・・でも事実)。
もういっこ残念なことにHigh-Cやアセンブラを持っているのにF-BASIC
3862.1L10以降を持っていない人もお別れになってしまいます。(High
-Cを持っている人は純正のGUIライブラリを使ってね( ゚-^)h")
最近では、フリーソフトウェアにも、GUIを作成するツールが発表されています。
高機能で本格的なGUIを目指したい方はそちらをおつかいください。[GUI E
volution]では、取り合えずレイアウタ機能を持っていますので、その分簡
単にGUIが楽しめると思います。(一応高機能かな?)
部分サブルーチン集として、ファイルダイアログ等を使えるようにするプログラム
も配付しています。そちらを併用しますと、更に高機能なGUIが出来るようになる
と思います。もっと高機能なことを望む方はHigh-Cの方へどうぞ!(^^;;
●具体的なこと
とGUIについては説明しましたが、具体的にこのプログラムで何が出来るか?とい
う話に移りましょう。
このプログラムでGUIのような部品、絵、文字をカラフルに配置していきます。そ
してその配置した物をBASIC専用プログラムに変更してBASICで単独起動で
きるものに変換します。BASICプログラムにしてしまえばあとは簡単。ボタンを
押すたびに呼ばれるサブルーチンが有りますのでそこに貴方のプログラムを書いてい
くだけです。変換するともうこのGUI Evolutionは要りません。
前回のGUI4に付け加えて今回はもっと部品編集機能を簡単かつ高度に(?)出来
るようになりましたので、「あ、まちがえて配置しちゃった(^^:」と言うことになっ
ても大丈夫です。
BASICがハイレゾ対応になったこともありまして、GUI Evolution
にもハイレゾ対応させました。MX,MA以上の機種をお持ちのかたは自動的にハイ
レゾ編集モードに変わるでしょう。(ハイレゾで編集したくないかたはキーボードの
[L]を押しながら立ち上げるか、設定メニューで変更できます。後記述)
編集も386の方はスピードがきついと思いますので、座標表示ウインドウもとじる
ことが出来ます。
前回にくらべてプログラムを分かりやすく書きましたので、すこし処理速度は速くな
っています。変換後は前回とは比にならないほど速くなっています(部品を100個
以上配置した場合)
プログラムの書き方も、前回のように部品番号で部品を管理するのではなく、それぞ
れのサブルーチンを作ってゆく(High-Cより)タイプに変わりました。(私の
プログラム形式とそっくりな環境です。このGUI Evolutionのソースを
見て頂けば分かると思います。)
う~ん。ざっと機能を上げてしまいましたが、細かい設定ももっと変更しています。
今回プログラムで一番大変だったのが、BASICのハイレゾバグでしょう(笑)
。ハイレゾ状態でINPUT#が出来ない。エラー表示WINDOWを縦640横4
80以上に置いておくと保存が出来ないというバグに超悩まされました。(もしかし
て富士通の皆さん最後の方にハイレゾ機能付けたのでは・・・?)
などとまだまだバグがありそうなGUI Evolutionですが、それでは使い
方、いってみましょ~^^;
□起動のさせ方
[GUI Evolution」を起動させるには、TOWNS-MENUでファイ
ルで選択するか、MS-DOSでディレクトリをチェンジしてから実行してください。
アイテム登録をしてくださる方は必ずディレクトリ移動を有りにしてください。
ファイル構成
GUIREMIX.BAS
GUIREMIX.DOC
GUIREMIX.EXP *
GUIREMIX.HLP *
GUIREMIX.TIF *
*印の付いたファイルは実行に必要な物です。
ディレクトリ移動をしていなかったり、ファイルが足りない方は、実行実にエラーメ
ッセージが出ます。
□メニューの解説だよ
┏FMTOWNS
┃ ├About・・・
┃ ├フリーメモリー
┃ ├Help
┃ └Quit
┃
┣ファイル
┃ ├新規作成
┃ ├読み込み
┃ ├パレット読み込み
┃ ├書き込み
┃ ├パレット書き込み
┃ ├コンバート
┃ ├ファイル削除
┃ └ディレクトリ作成
┃
┃
┣編集
┃ ├部品編集
┃ ├部品詳細編集
┃ ├マウスエディタ
┃ └パレットエディタ
┃
┣設定
┃ ├レゾリューション設定
┃ ├コンバート設定
┃ ├背景設定
┃ └座標表示を付ける/省く
┃
┣ヘルプボタン
┗終了ボタン
★右クリック 部品配置
というような構成になっています。それでは上から順に使い方を説明していきましょ
う。
○About・・・
いつものアバウトです。GUIでは結構お馴染みではないでしょうか?。
最近では結構このAboutを作るのが好きになってきました。いつもは字だけでご
まかす^^;のですが、今回は始めて絵を乗せると言うことに挑戦しました。というお
蔭でAboutの広さが他のプログラムでは見られないほど大きい物となってしまい
ました。
利用方法としては・・・ありません。ただ、誰が制作したのか?、どういうプログラ
ムかというのが書いてあるだけです。気にしないでください。
○フリーメモリー
あとどの位メモリが残っているかを見るときに使います。メモリが4M以上あるひと
は、ほとんどメモリを気にしなくても結構ですが、3Mのひとは・・・メモリとの格
闘です。部品を配置してゆくたびメモリが少しずつ減ってゆくのです。あなおそろし
や(^^;;。
○HELP
オンラインヘルプマニュアルです。部品を作っている最中に詰まってしまっても、T
OWNSMENUに戻らずに、編集しながら説明書見ることが出来ます。(オンライ
ンヘルプマニュアルなので、編集上最低限のことしかかいてありませんが。)
尚、余談ですが、富士通のヘルプファイルと(EUPHONYIIとか)にフォーマッ
トを合わせたつもりです。
●Prev.ボタン
ページを戻すボタンです。
●Next.ボタン
ページを捲るボタンです。
●Contentsボタン
表紙に戻します。
数値でページをめくる機能は面倒臭いので止めました(^^;;。
○Quit
プログラムを終了してTOWNSMENUに戻ります。PF12キーを押すのと同じ
効果があります。このボタンを押す前に作ったデータはセーブしておきましょう。
○新規作成
メモリ上のすべてのデータを消します。このボタンを押す前に作ったデータは必要な
らセーブしておきましょう。消したあとに気づいてもAfter festival
です。
○読み込み
フロッピーやハードディスクから、この「GUI Evolution」で作ったデ
ータを読み込みます。データを読み込むと今まで作っていたデータは消されますので
、ご注意ください。
読み込むファイルの拡張子は「.NG5」です。それ以外のファイルを読み込ませよ
うとしても読めないと思います。ファイルは絶対に改造しないでください。
・・・ファイルダイアログの使い方→後記述
○パレット読み込み
16色パレットファイルを読み込みます。パレットファイルは出来るだけ「GUI
Evolution」で作ったの物を使用してください。フリコレ10に載っている
私の作ったパレットツールで作ったファイルでもOKです。
パレットファイルのなかでも256色のパレットファイルなどがありますので、間違
えて読み込まないように気を付けてください。(パレットファイルのファイルサイズ
は96バイトです。)
読み込むファイルの拡張子は「.PAL」です。
・・・ファイルダイアログの使い方→後記述
○書き込み
「GUI Evolution」で作ったデータをファイルに書き込みます。前回の
「NOI’z BASIC SUPPORT LIBRARY 4」に比べると書き
込むデータの量が10倍以上に増えたので書き込み時間は多少長めです。(といって
も数秒)
中には変更してはいけないデータなどもありますので絶対に変更しないでください。
書き込んだファイルの拡張子は「.NG5」です。
・・・ファイルダイアログの使い方→後記述
○パレット書き込み
パレットツールで作ったパレットのデータを書き込みます。
書き込んだファイルの拡張子は「.PAL」です。
・・・ファイルダイアログの使い方→後記述
○コンバート
作ったデータをF-BASIC386で読める(実行できる)ように変換します。さ
らに、ボタンなどを押すためのランタイムルーチン(?)を追加します。
部品が一個も配置されていなければ実行できません。
さてコンバートを選ぶと、さらに質問してきます。
●デスク型
データをプログラムの中核、つまり脳ミソのような役割を果たすデータを作成します
。つまり、TOWNSMENUで言えば、画面上のメニューバーみたいなものです。
そこから、「**をせよ!」という命令がでたら、ウィンドウを出したり、プログラ
ムを実行したりします。
コンバートの設定で追加するサブルーチンを選んでおく必要があります。もしこのあ
とウィンドウ型やアラート型を組み込む場合はウィンドウ移動ルーチンを必ず組み込
んでください。
・・・コンバート設定→後記述
●ウィンドウ型
上のデスク型から呼び出して使います。できることは上のデスク型と同じですが、ち
ょっとちがうところは、部品を乗せたダイアログが移動できるのです。WINDOW
Sを使ったことがあるひとは良く分かると思います。
でもこのウィンドウ型を使うには自分でデスク型とくっつけなくてはいけません。そ
のやりかたは後で説明します。
→テクニカルインフォメーション
●アラート型
エラーメッセージの表示など、文字とアイコンだけでなりたつウィンドウのようなも
のです。実際にはマウスを動かしたり、クリックしたりすると消えます。
この上の3つの中からえらびます。
データの形式にあったコンバートを選んでください。
○ファイル削除
不必要なファイルを削除します。(ディレクトリは削除できません)消してしまった
ファイルは戻らない可能性がおおいので気を付けてください。
○ディレクトリ作成
ディレクトリを作成します。
○部品編集
配置した部品を移動させたり、カット、クリア、ペースト、コピーが出来ます。基本
操作はホップアップメニューによって操作します。選んだ部品は枠で囲まれて四辺に
四角が付きますのでどの部品が編集状態なのかが分かると思います。回りの■をドラ
ックすると、部品のサイズが変更できます。(FMTOWNSアイコン、EXITア
イコン、プルダウンアイコンはリサイズできません。)
○部品詳細編集
部品編集では部品をグラフィカルに編集するのであって、部品詳細編集は数値入力に
よって編集可能です。部品編集によって編集できる物は、部品のサイズ、色、部品の
反転処理、プルダウンメニューの文字列編集、文字の変更です。その他、カット、ペ
ースト、コピー、クリア、スワップができます。
●スワップとは?
BASICの意味では変数の交換という意味だそうです。つまり、位置を交換します
。2次元的な位置の交換ではなくて、3次元的な位置の交換です。
例えば、ダイアログ部品の上にアイテムボタンが乗っているとします。この二つをス
ワップさせると、アイテムボタンの上にダイアログ部品が乗っているように変わりま
す。
では各ボタンの説明をしていきます。
┌─────────────────────────────┐
├─────────────────────────────┤
│┌──────────────┐ │
│└───────2──────┘ 4 5 │
│┌──────────────┐ ┌──┐ ┌──┐ │
││ │ └──┘ └──┘ │
││ │ 6 7 │
││ 1 │ ┌──┐ ┌──┐ │
││ │ └──┘ └──┘ │
││ │ │
││ │ │
│└──────────────┘ ┌──────────┐│
│┌───────3──────┐ │ 8 ││
│└──────────────┘ └──────────┘│
│┌──────────────9────────────┐│
│└───────────────────────────┘│
│┌──┬──┬──┬──┬──┐ ┌───┐│
││10│11│12│13│14│ │ 15 ││
│└──┴──┴──┴──┴──┘ └───┘│
└─────────────────────────────┘
1、配置されている部品のリストです。部品を編集するならここをクリックしなけ
ればいけません。(FMTOWNS,EXIT,PULLマークは編集できま
せん)
2、リストを3で下げてしまったときに、2で上げます。
3、リストに入りきらなかった部分がある時にリストを下げます。
4、始点X座標を数値入力します。(ハイレゾの時0~1023
ローレゾの時0~639)
5、始点Y座標を数値入力します。(ハイレゾの時0~767
ローレゾの時0~479)
6、終点X座標を数値入力します。(ハイレゾの時0~1023
ローレゾの時0~639)
7、始点X座標を数値入力します。(ハイレゾの時0~767
ローレゾの時0~479)
8、色を変更します。FMTOWNS,EXIT,PULLマークは色を変更でき
ません。
9、アイテムボタンの場合 :ボタン反転とボタンの名前を変更します。
プルダウンメニューの場合:ボタン反転とプルダウンメニューの文字リストを
変更します。
文字の場合 :文字列を変更します。
10、カット
部品を切り取ります。切り取る際にカットバッファに部品が入りますので、復
させたい場合はペーストボタンを押してください。
11、コピー
カットバッファに部品を入れます。
12、クリア
部品を消してしまいます。クリアはカットとちがってカットバッファに部品を
入れません。
13、ペースト
もしカットバッファに部品が入っていれば、その部品をリストに追加します。
ペーストする時に、挿入ポイントを聞いてきますので、位置を確かめたあと、
挿入ポイントをクリックしてください。
○マウスエディタ for GUI Evolution V1.0
なんと、「GUI Evolution」のサブルーチンまでにバージョンが!なん
てことはいいとして、マウスエディタです。本当に自分のGUIを作りたいひとはお
使いください。
┌────────────────────────────┐
├────────────────────────────┤
│┌──────────────────┐┌───2──┐│
││ │└──────┘│
││ │┌───3──┐│
││ │└──────┘│
││ │┌───4──┐│
││ │└──────┘│
││ │┌───5──┐│
││ 1 │└──────┘│
││ │┌───6──┐│
││ │└──────┘│
││ │┌───7──┐│
││ │└──────┘│
││ │┌───8──┐│
││ │└──────┘│
││ │┌───9──┐│
│└──────────────────┘└──────┘│
└────────────────────────────┘
1、編集画面
マウスの形状を描く部分です。枡目は16×16ドット。赤く×となっている
ところがマウスの反応点です。
反応点→後記述
2、黒色
マウス形状を黒で描くためのボタンです。このボタンが押されている間は、黒
色で形状が描けます。
3、白色
マウス形状を白で描くためのボタンです。このボタンが押されている間は、白
色で形状が描けます。
4、下地
描いた部分を消す(透明)にします。
5、試す
作ったマウス形状を試してみます。ボタンを押すと、しばらくした後、現在の
マウスが作成したマウスに変わります。右クリックすると、元に戻ります。
*注意:形状を変えたまま編集は出来ません。
6、反応点
マウスの水平読み取り位置と垂直読み取り位置を設定します。つまり、マウス
のどこらへんに反応があるかを設定します。詳しくはBASICのマニュアル
を見てください。
7、保存
作ったデータをメモリに保存します。(データは4個まで保存されます)
デスクモードでコンバートした場合は、BASICファイルで出力されます。
8、呼出
保存したマウスデータを呼び出します。データは4個まで呼び出せて、標準の
マウスの形と、ダイアログなどを移動したときのマウスの形もサンプルとして
保存されています。
9、消す
現在編集中のデータを消します。
○パレットエディタ for GUI Evolution V1.0
独自の色を作りたいときに使用してください。ちなみに全部の色を統一すると、とん
でもないことになります。(見えない(^^;;)
┌─────────────────────┐
├─────────────────────┤
│┌┬┬┬┐┌──────────────┐│
│├┼┼┼┤└──────────────┘│
│├┼┼┼┤┌──────────────┐│
│├┼┼┼┤└──────────────┘│
│└┴┴┴┘┌──────────────┐│
│ └──────────────┘│
└─────────────────────┘
1、パレット
パレットです。16色のパレットなので、16升あります。一個目は変更して
も、色は変わりません。
2、G
Greenの色の濃さを変更します。右に行くほど色が濃く、左に行くほど色
が薄くなります。
3、R
Redの色の濃さを変更します。右に行くほど色が濃く、左に行くほど色が薄
くなります。
4、Brueの色の濃さを変更します。右に行くほど色が濃く、左に行くほど色が
薄くなります。
○レゾリューション設定
MX、MA以上の機種をお持ちの方は、画面をハイレゾモードで広く使うことがで
きます。(というか、始めから広いですが)
高解像度の場合は中解像度に、中解像度の場合は高解像度になりますが、機能制限
があります。
1、全角文字が使えなくなる。
これはBASICの使用なので変更が効かないのですが、ハイレゾの場合は
、INPUT文やPRINT文が使えません。文字入力機能も、実はINK
EY$を使っているので、平仮名、片仮名、全角文字、漢字などが使えなく
なってしまいます。
2、作ったデータは、中解像度で読めない。
作ったデータが中解像度の画面サイズ以上に配置されている場合が有ります
ので読めないようにしてます。
3、BASICにコンバートしてもMX、MA以上じゃないと読めない。
↑の話の延長上です。つまり、あなたが中解像度用と高解像度用を用意しな
いといけません。
といった機能制限があります。
あまり意味がなかったかな・・・(T_T)
○コンバート設定
デスクコンバートの時に付け加えるサブルーチンの設定をします。自動モードにす
ると、データの形式を読み取って、自動的に付け加えます。ただし、ダイアログ移
動処理のサブルーチンは自分で付け加えないといけません。
┌───────────────────────────┐
│ │
│ ■ファイルに合わせて自動最適化 │
│ │
│ ■ユーザー手動変更 │
│ │
│ ■標準ボタンを描くサブルーチン │
│ │
│ ■ウィンドウ移動処理のサブルーチン │
│ │
│ ■FMTOWNSのロゴマーク │
│ │
│ ■EXITマーク │
│ │
│ ■プルダウンマーク │
│ │
│ ■プルダウンメニューを表示するサブルーチン │
│ │
└───────────────────────────┘
これは見ての通りなので説明は要らないと思います。あえて言えば、
●ファイルに合わせて自動最適化が選択されていれば、↓の設定はしなくて良い。
○ウインドウ型を取り付ける予定でいるデスク型には、ウィンドウ移動処理のサブ
ルーチンを手動で取り付ける必要がある。
ということです。詳しくはテクニカルインフォメーションで説明しますが、↑は絶
対覚えておいてください。
○背景設定
背景の色を選択します。としか言いようがありません。
○座標表示を付ける/省く
編集中に表示される、座標表示のウィンドウをつけるか付けないかを設定します。
○HELPと○EXIT
↑の方(^^;;を参照してください。
○部品を作る
ボタンを作るといっても、ボタンを作るボタンがないぞ!・・・あ、そうだ。そこの
ところは前回と違っていて、右クリックが部品配置モードです。右クリックするとほ
ら上のメニューバーが消えたでしょ?
さらに右ボタンを押すとメニューが出てくると思います。(こういうのをホップアッ
プメニューと言います)
┌───────────┐
│アイテムボタン │
├───────────┤
│ダイアログ │
├───────────┤
│ボックスフィル │
├───────────┤
│プルダウンメニュー │
├───────────┤
│文字 │
├───────────┤
│プルダウンボタン │
├───────────┤
│FMTOWNSマーク │
├───────────┤
│EXITマーク │
├───────────┤
│色 │
├───────────┤
│形 │
├───────────┤
│システムアイコン │
├───────────┤
│編集終了 │
└───────────┘
○アイテムボタン
ボタンのことです。前回までは「反応有ボタン」なんて読んでいました。つまり、押
せるボタンのことです。見分けはダイアログと区別が付かないのですが、主にダイア
ログの中にアイテムボタンを配置します。
アイテムボタンの例としては、TOWNSMENUの右端の終了ボタン(本当はアイ
コンボタンっていうんだけどね(^^)みたいなものです。
配置の仕方はマウスの右ボタンを押しながらアイテムボタンを選択します。そのあと
に、左ボタンで、ボタンを描きたい始めの座標をマウスでクリックします。その後、
終わりの座標まで持っていきます。これでボタンが描けたと思います。この時、色や
形を指定できます。
→色、形については後記述
配置し終わったあと、ボタンの反転の設定を聞いてきます。これは、ボタンが押され
たときに、使っている人が見やすいようにボタンをへこましたりする処理の事です。
次の3つが選択できます。
1、淵をボタン色で潰す
ボタンと同じ色で、ボタンを凹ませます。凹んだときの深さは↓のほうが上です。
2、ボタンを凹ませる
ボタンの色などに関係なく、ボタンを凹ませます。背景の色がボタンの色と同じ
ときに指定すると効果的です。
3、ボタンを反転させる
ボタンの色自体を反転させます。つまり、白→黒、黒→白の様な変化です。
さらに選択すると、今度は部品の名前を聞いてきます。この部品の名前は、そのボタ
ンが押されたときに呼ばれるサブルーチンのラベル名になります。コピー等をしたと
きは部品の名前の衝突に気を付けましょう。
これでアイテムボタンを配置する全ての工程が終わりました。前作に比べると設定項
目が増えたわけですが、その分高速化がすすんだというわけなんですね~(^^/。引き
続き部品を作りたい場合は↑に戻ってください。
○ダイアログ
アイテムボタンとは違って押せないボタン(見かけのボタン)です。というより、こ
の場合ボタンに使うよりウィンドウなどの土台に使ってください。(それと画面のレ
イアウト等にも)
コンバートするときにウィンドウ型を選ぶと、部品達の土台となる部分を聞いてきま
すので、ウィンドウを作る場合は必ずダイアログを引きましょう。
配置の仕方はアイテムボタンと同じです。
○ボックスフィル
ただ指定色で塗りつぶすだけです。ボタンは押せませんので、これも画面のレイアウ
トに使ってください。
○プルダウンメニュー
プルダウンメニューは、TOWNSMENUの上の方にあるボタンのような物で、押
すと下にリストがずらずら~と出てきます。このようなボタンをプルダウンメニュー
と呼びます。
プルダウンメニューはアイテムボタン+αのような感じです。(プルダウンメニュー
の反応処理を行ったあとにメニューを表示するので)ということで、始めの方はアイ
テムボタンと同じ質問をしてきます。
そのあとに、プルダウンメニューに取り付ける文字を入れていきます。前作であった
プルダウンメニューの幅は、今回のでは省略されていて、BASICにコンバートし
たときに勝手に付け足してくれます。
もしメニューの内容に区切りを付けるときは、[NULL]と入力するとその部分が傍線
になります。
*注意:アイテムボタンの場合は、サブルーチン名を聞いたのですが、プルダウンメ
ニューの場合はサブルーチン名が[GUI Evolution]の中で勝
手に付けられます。(PULLDOWNNUMBER~)ウィンドウなど、
デスクの上に重ねる場合は、変数の衝突に気を付けてください。
○文字
画面に指示やメッセージを書きたい時に使います。部品の大きさを変更すると拡大文
字になります。フォントを変更したい場合は、コンバートしたあと、BASICの文
法に従って変更してください。(プログラマーなら変更場所が分かると思います。)
○プルダウンボタン、FMTOWNSボタン、EXITボタン
↑の3つはアイコンです。部品に見分けを付けるために使います。本当はアイコンを
High-Cみたいに使いたかったのですが(って、それがないためにちゃっちいソ
フトと見られてるのかも・・・)、プログラムのソースの汚さと10分格闘したあと
負けました(^^;;。ので、もう少しこの状態で我慢してください。
配置の仕方は配置したい場所でマウスをクリックするだです。
色形には関係ないので気を付けてください。
○色
部品の色を選択します。色はパレットエディタで作ったデータがそのまま使えます。
一番上の黒色は透明色です。背景に何もない場合は背景色になりますが、何かがある
場合は不自然になってしまいます。
○形
部品のボタンの形を選択します。
○システムアイコン
システムROMに入っているアイコンを使用します。(アイコンファイルの読み込み
には、フリーソフトの「BLB」(高梨 直樹様の作品)を一部使わせてもらいまし
た。
ここのメニューバーでマウスを放すと内蔵アイコンが表示されます。その中から使
いたいアイコンをマウスでクリックして、配置してください。
色を変更すると、アイコンの色が変化します。ちなみにパレット番号0を選ぶと(
この場合)色は白になります(色が黒だと、真っ黒になってしまうので)。
○編集終了
編集を終了して、メニューに戻ります。
ということで部品の配置の説明を終わります。
□テクニカルインフォメーション
ここからは[GUI Evolution]で作ったデータをスムーズにプログラム
するためのガイドです。ここからはBASICを少し知っていることを前提とさせて
頂きます。
★第一章~BEEP音を鳴らしてみる★
第1章は画面にボタンを一個配置して、そのボタンが押されたらBEEP音を鳴らす
と言う処理をします。この章で使うBASICの関数は
***************************************
*BEEP *
***************************************
のみです。
○始めに部品を配置しよう。
[GUI Evolution]を使って部品を配置しましょう。起動させてから部
品配置モードにして、画面の中央にアイテムボタンを配置させます。(ボタンの名前
はPLAYBEEPにしました。)
SAMPLE¥SAMPLE1.NG5
.BAS
ファイルメニューからコンバートを選び、デスク型でコンバートします。ファイル名
は適当な名前を入力してください。実行ボタンを押すと、BASIC用のファイルが
完成していると思います。
次にF-BASIC386を起動ましょう。
そして今作ったBASICのファイルを読み込みます。そして最後の部分に移動させ
てみてください。
690 *MAIN
700 MOUSE 0
710 MOUSE 2,AND0$,DOT0$,MPX(0),MPY(0)
720 MOUSE 1,320,240,1
730 LINE(0,0)-(640,480),PSET,0,BF
740 LINE(243,203)-(376,286),PSET,%7,BF
750 X1=243:Y1=203:X2=376:Y2=286:GOSUB *CONNECT2
760 SYMBOL(296,240),"BEEP",.75,.75,7
770 WHILE MOUSE(2,0)=0:WEND:MX=MOUSE(0):MY=MOUSE(1)
780 IF MX>=243 AND MY>=203 AND MX<=376 AND MY<=286 THEN GOSUB *PLAYBEEP
790 GOTO 770
800 *PLAYBEEP
810 X1=243:Y1=203:X2=376:Y2=286:GOSUB *CONNECT2R
820 WHILE MOUSE(2,0)=-1:MX=MOUSE(0):MY=MOUSE(1)
830 IF MX>=243 AND MY>=203 AND MX<=376 AND MY<=286 ELSE GOSUB *CONNECT2:RETURN
840 WEND
850 GOSUB *CONNECT2
860 '/*******************************************************************/
870 '
880 ' Your Program Zone
890 '
900 '/*******************************************************************/
910 RETURN
上の*MAINという部分では、[GUI Evolution]でボタンを描いた
物をF-BASIC386用に書き直して、さらに反応処理を付け加えた物です。
730行目から760行目までが画面を描く部分で、770行目から790行目まで
がボタンの反応処理です。
そして800行目からの*PLAYBEEPというサブルーチンが、真ん中のボタン
が押されたときに呼ばれるサブルーチンです。
810行目から850行目までが、ボタンを押しているか放しているかという処理な
のですが、普通にプログラミングするのならあまりここにはタッチしなくてもいいで
しょう。(後半ではウィンドウを取り付けるために改造します)
そして貴方のプログラムを描くところが860行から900行までです。(これ以上
の行でプログラムを書きたい場合はAUTO等で挿入していっても全然構いません)
でもたまたま今回はBEEPだけですので、1行で済みます。
どうかくのか・・・それはBASICの書き方と一緒です。
800 *PLAYBEEP
810 X1=243:Y1=203:X2=376:Y2=286:GOSUB *CONNECT2R
820 WHILE MOUSE(2,0)=-1:MX=MOUSE(0):MY=MOUSE(1)
830 IF MX>=243 AND MY>=203 AND MX<=376 AND MY<=286 ELSE GOSUB *CONNECT2:RETURN
840 WEND
850 GOSUB *CONNECT2
880 BEEP
910 RETURN
に変更し、さらに要らない行を消しましょう。
これでプログラム的にはBEEP音が鳴ってメインループに復帰するという立派なプ
ログラム(1行変更しただけで)なってしまいます。
そしてコンパイラを持っている人はここでコンパイルしても構いません。
どうでしょう。あとはこの部分をサウンドメッセージにしても構いませんし、(ちょ
っとGUIには非常識だけど)PRINT文で”HELLO!”等もいいでしょう。
こんなに簡単に第一章が終わってしまいました。では次は第二章。今度はプルダウン
メニューを取り付けてみます。
★第二章~プルダウンメニューを使ってみる★
第1章と大した違いはありませんが、プルダウンメニューを作るときの注意を一つ二
つ。とりあえずプルダウンメニューのサンプルを見てください。
SAMPLE¥SAMPLE2.NG5
.BAS
プログラムを実行させると、上にFMTOWNSというボタンとファイルというボタ
ンとEXITボタンが付いています。このFMTOWNSというボタンとファイルと
いうボタンがプルダウンメニューです。FMTOWNSのボタンを押すとAbout
の下が傍線になっています。これはどうやってやったのかというと、-を敷き詰める
(嘘)のではなくて、プルダウンメニューをつくるときに
NULL
と入力すればいいのです。ここらへんはHigh-Cとは違っています。
2540 *PULLNUMBER0
2550 FOR I=0 TO 1
2560 LINE(0+I,0+I)-(100-I,19-I),PSET,%1,B
2570 NEXT
2580 X1=0:Y1=0:X2=100:Y2=19
2590 N$(0)="About..."
2600 N$(1)="NULL"
2610 N$(2)="Quit"
2620 WDX=68:N=3
2630 GOSUB *PULLDOWNMENU
2640 GOSUB *CONNECT2
2650 IF A=0 THEN
2660 '/*******************************************************************/
2670 '
2680 ' Your Program Zone
2690 '
2700 '/*******************************************************************/
2710 ENDIF
2720 IF A=1 THEN
2730 '/*******************************************************************/
2740 '
2750 ' Your Program Zone
2760 '
2770 '/*******************************************************************/
2780 ENDIF
2790 IF A=2 THEN
2800 '/*******************************************************************/
2810 '
2820 ' Your Program Zone
2830 '
2840 '/*******************************************************************/
2850 ENDIF
2860 RETURN
これがFMTOWNSを押したときに呼ばれるサブルーチンです。第1章と同じくY
our Program Zoneとかいてあるところにプログラムを書きますが、
かけない場合はGOSUB・・・としてもいいですし、行を開けても構いません。で
も必ずENDIFには到達してください。(でないとスタックエラーまたはENDI
Fが無いとBASICから怒られてしまいます(^^;;)
ちなみにAの数が0から数えて上から何番目かと表しています。
2790 IF A=2 THEN
2800 '/*******************************************************************/
2810 '
2820 ' Your Program Zone
2830 '
2840 '/*******************************************************************/
2850 ENDIF
というのは上から数えて3番目のプルダウンアイテムが呼ばれた(この場合は、Quit
が呼ばれたということです)
つまりここの部分にはENDと書けばいいわけで、
2790 IF A=2 THEN
2840 END
2850 ENDIF
となります。簡単でしょ?。省略すれば、
2790 IF A=2 THEN END
と1行にまとめられます。
これでプルダウンメニューの付け方が終了しました。次の章ではついに大御所(?)
ウィンドウの付け方に挑戦します。
★第三章~ウィンドウを付けてみる★
ウィンドウを取り付けるには、土台のデスク型をコンバートするときにウィンドウ移
動処理のサブルーチンを取り付けていないといけません。これは早いうちにやらない
ととんでもないことになります。(つまり凄く面倒だということ)
*注意*
1、ウィンドウ型とは、「GUI Evolution」の場合、TOWNSME
NUのようにウィンドウを自由に(上下に)入れ換えできる物ではなくて、次
々と表示させて(消して)ゆくタイプです。これはBASICを詳しく知って
いる人ならば出来ると思いますが、プログラムが複雑になってしまいますので
、今回は(も)省かせて頂いています。
2、ウィンドウ型は単体では動きません。
かならず元となるデスク型が必要です。
元となるデスク型をコンバートするときには、コンバートの設定で、ウィンド
ウを移動するサブルーチンをONにしてください。
次にウィンドウ型と作りますが、次のように作ってください。
→┏┯━━━━━━━━━━━━━━━━━━┓
│┠┴──────────────────┨
│┃ ┃
│┃┌───┐┌────┐ ┃
ボタンや何か─→ ││ │ ┃
│┃└───┘└────┘ ┃
│┃ ↑ ┃
└╂───────┘ ┃
┃ ┃
┃ ┃
┃ ┃
┃ ┃
┃ ┃
┃ ┃
┗━━━━━━━━━━━━━━━━━━━┛
↑必ずダイアログである。
これはあくまでも例ですが、必ずダイアログの上に全ての部品が乗っかっていないと
いけません(重なるのはokです)。というのはウィンドウ型の場合、BASICに
コンバートした場合、土台が動かなくてはいけません。ということは土台のダイアロ
グの上に全ての部品が乗らないと部品が正しく移動しないのです。
こうやってウィンドウを作ります。サンプルは
SAMPLE¥SAMPLE3 .NG5
SAMPLE3D.BAS
SAMPLE3 .BAS
にあります。
ウィンドウはだしたままでは困るので、必ずウィンドウを消すアイテムボタンを作っ
ておいてください。
ウィンドウ型のデータを作ったら、コンバートでウィンドウ型を指定して実行ボタン
を押してください。つぎに、部品を乗せている土台のダイアログを聞いてきますので
、先程説明した土台のダイアログをクリックしてください。ここで土台から部品がは
み出していたり、ダイアログを作っていなかったりしたら、取消ボタンを押して作り
直してください。
次に元となるデスク型を用意します。先程も説明したとおり、ウィンドウ型は単体で
は動きません。しかもウィンドウ型は移動します。ウィンドウ型を移動するサブルー
チンはデスク型をコンバートするときにしか付いてきません。この場合、第二章で作
ったプルダウンメニュー付きのデスク型を使用します。
第二章で作ったデスク型を読み込みます。そして、コンバートする前に、設定メニュ
ーの「コンバートの設定」(↑参照)で「ウィンドウ移動処理のサブルーチン」をO
Nにします。(このとき、ユーザー手動変更をONにしないと↑が反応しません)し
かも第二章のサンプルはボタン、FMTOWNSのアイコン、EXITアイコン、プ
ルダウンマーク、プルダウンメニューを使っていますので、すべてONにしてくださ
い。
これでデスク型でコンバートします。
コンバートし終わったら「GUI Evolution」を終了させて、F-BAS
IC386を起動させます。
先にウィンドウのために作ったBASICファイルを読み込ませて、RENUMで1
0行目からを10000行目からに変更させます。そして全てをポケットインして下
さい。(ポケットを使用してない方はシステムソフトウェアの説明書を参照してポケ
ットを使用できる状態にしておいてください)
次にデスクのために作ったBASICファイルを読み込んで、ここで行番号を付けず
にポケットアウトしてください。ウィンドウがマージされたと思います。
肝心のウィンドウのサブルーチン名ですが、ウィンドウをBASIC用ファイルにコ
ンバートしたときのファイル名.BASがサブルーチン名になっています。気に食わ
ない人は置き換えされても結構です
例.
置き換え 元 SAMPLE3.BAS
↓
SAMPLE3
第二章のデータにはアバウトがプルダウンメニューの中に有りますので、ここが呼ば
れたらウィンドウを表示させるようにします。
2540 *PULLNUMBER0
2550 FOR I=0 TO 1
2560 LINE(0+I,0+I)-(100-I,19-I),PSET,%1,B
2570 NEXT
2580 X1=0:Y1=0:X2=100:Y2=19
2590 N$(0)="About..."
2600 N$(1)="NULL"
2610 N$(2)="Quit"
2620 WDX=68:N=3
2630 GOSUB *PULLDOWNMENU
2640 GOSUB *CONNECT2
2650 IF A=0 THEN
2660 '/*******************************************************************/
2670 '
2680 ' Your Program Zone
2690 '
2700 '/*******************************************************************/
2710 ENDIF
↑の部分を
2650 IF A=0 THEN
2700 GOSUB *SAMPLE3.BAS
2710 ENDIF
に変更します。
これで試しに実行してみてください。アバウトが呼ばれるとウィンドウが表示される
ようになると思います。でもウィンドウが表示されると元のメニューバーが反応され
なくなってしまいます。これはボタン反応処理のループをウィンドウ用に渡してしま
ったためで、元に戻すには貴方がプログラムしなくてはいけません。
次の章ではウィンドウを消してボタンの反応を元に戻す方法を書きます。
★第四章~ウィンドウを消さなくては!★
今度は第三章で表示させたウィンドウを消します。
第三章でつくったウィンドウには「確認」というアイテムボタンがあります。この「
確認」ボタンを押すとウィンドウを消して、メインループに復帰するようにします。
突然ですが、ここで変数の説明をします。FWという変数にはウィンドウの後ろの背
景をしまうようになっています。例えばこの場合、
10000 *SAMPLE3.BAS
10010 WIN=0
10020 WINX(WIN)=181
10030 WINY(WIN)=190
10040 LONG_X(WIN)=236
10050 LONG_Y(WIN)=114
10060 OFFSET(WIN+1)=(LONG_X(WIN)*LONG_Y(WIN))/8+LONG_X(WIN)
10070 GET@A(WINX(WIN),WINY(WIN))-(WINX(WIN)+LONG_X(WIN),WINY(WIN)+LONG_Y(WIN)),FW,OFFSET(WIN)
10070行目がそうです。(10010行目のWINという変数はいま現在のウィ
ンドウ枚数です。この場合ウィンドウは最大1枚しかだしませんのでWINの値は0
で変更せずにしておいてください。)
つまり、FWという変数をPUT@Aすれば見かけ上はウィンドウが消えるというこ
とになります。さらに第三章でGOSUBで呼び出したので、メインのループに戻る
にはRETURNで良いのです。
ということは、
10250 *OK
10260 FOR I=0 TO 1
10270 LINE(WINX(WIN)+181+I,WINY(WIN)+79+I)-(WINX(WIN)+231-I,WINY(WIN)+109-I),PSET,%7,B
10280 NEXT
10290 X1=WINX(WIN)+181:Y1=WINY(WIN)+79:X2=WINX(WIN)+231:Y2=WINY(WIN)+109
10300 WHILE MOUSE(2,0)=-1:MX=MOUSE(0):MY=MOUSE(1)
10310 IF MX>=WINX(WIN)+181 AND MY>=WINY(WIN)+79 AND MX<=WINX(WIN)+231 AND MY<=WINY(WIN)+109 ELSE GOSUB *CONNECT:RETURN
10320 WEND
10330 GOSUB *CONNECT
10340 '/*******************************************************************/
10350 '
10360 ' Your Program Zone
10370 '
10380 '/*******************************************************************/
10390 RETURN
↑の空きの所に、
10340 '/*******************************************************************/
10350 PUT@A(WINX(WIN),WINY(WIN))-(WINX(WIN)+LONG_X(WIN),WINY(WIN)+LONG_Y(WIN)),FW,,,,,OFFSET(WIN) 'ウィンドウを見かけだけ消す。まだループは戻ってない。
10360 RETURN 'ループを戻し、完全にウィンドウを消す。
10380 '/*******************************************************************/
10390 RETURN
とすればいいのですが・・・↑をよ~くみてください。RETURNが2つあります
。これではいけません。
もともとこの「確認」ボタンもGOSUBで呼ばれていますので、これではウィンド
ウが消えるだけでループはウィンドウのままです。(1つ目のRETURNは「確認
」ボタンをループに戻すことに使っている)
ということは「確認」ボタンにはGOSUBを使えない・・・ということは「確認」
をGOSUBではなくてGOTOにすればいいのです。
10220 WHILE MOUSE(2,0)=0:WEND:MX=MOUSE(0):MY=MOUSE(1)
10230 IF MX>=WINX(WIN)+181 AND MY>=WINY(WIN)+79 AND MX<=WINX(WIN)+231 AND MY<=WINY(WIN)+109 THEN GOSUB *OK:GOTO 10220
10240 IF MX>=WINX(WIN) AND MY>=WINY(WIN) AND MX<=WINX(WIN)+LONG_X(WIN) AND MY<=WINY(WIN)+LONG_Y(WIN) THEN GOSUB *MOVESAMPLE3.BAS:GOTO 10220
10250 GOTO 10220
10260 *OK
10270 FOR I=0 TO 1
10280 LINE(WINX(WIN)+181+I,WINY(WIN)+79+I)-(WINX(WIN)+231-I,WINY(WIN)+109-I),PSET,%7,B
10290 NEXT
10300 X1=WINX(WIN)+181:Y1=WINY(WIN)+79:X2=WINX(WIN)+231:Y2=WINY(WIN)+109
10310 WHILE MOUSE(2,0)=-1:MX=MOUSE(0):MY=MOUSE(1)
10320 IF MX>=WINX(WIN)+181 AND MY>=WINY(WIN)+79 AND MX<=WINX(WIN)+231 AND MY<=WINY(WIN)+109 ELSE GOSUB *CONNECT:RETURN
10330 WEND
10340 GOSUB *CONNECT
10350 '/*******************************************************************/
10360 '
10370 ' Your Program Zone
10380 '
10390 '/*******************************************************************/
10400 RETURN
まずは上部の方を改造します。
10220 WHILE MOUSE(2,0)=0:WEND:MX=MOUSE(0):MY=MOUSE(1)
10230 IF MX>=WINX(WIN)+181 AND MY>=WINY(WIN)+79 AND MX<=WINX(WIN)+231 AND MY<=WINY(WIN)+109 THEN GOSUB *OK:GOTO 10220
10240 IF MX>=WINX(WIN) AND MY>=WINY(WIN) AND MX<=WINX(WIN)+LONG_X(WIN) AND MY<=WINY(WIN)+LONG_Y(WIN) THEN GOSUB *MOVESAMPLE3.BAS:GOTO 10220
10250 GOTO 10220
230行目が「確認」ボタンが押されているかどうかを確かめる部分ですので、ここ
のGOSUBとGOTOに直しましょう。(そのとき後ろのGOTO 10220と
いう部分はカットしてメモリに残しておいてください)
10220 WHILE MOUSE(2,0)=0:WEND:MX=MOUSE(0):MY=MOUSE(1)
10230 IF MX>=WINX(WIN)+181 AND MY>=WINY(WIN)+79 AND MX<=WINX(WIN)+231 AND MY<=WINY(WIN)+109 THEN GOTO *OK
10240 IF MX>=WINX(WIN) AND MY>=WINY(WIN) AND MX<=WINX(WIN)+LONG_X(WIN) AND MY<=WINY(WIN)+LONG_Y(WIN) THEN GOSUB *MOVESAMPLE3.BAS:GOTO 10220
10250 GOTO 10220
次に下部の方を改造します。
10260 *OK
10270 FOR I=0 TO 1
10280 LINE(WINX(WIN)+181+I,WINY(WIN)+79+I)-(WINX(WIN)+231-I,WINY(WIN)+109-I),PSET,%7,B
10290 NEXT
10300 X1=WINX(WIN)+181:Y1=WINY(WIN)+79:X2=WINX(WIN)+231:Y2=WINY(WIN)+109
10310 WHILE MOUSE(2,0)=-1:MX=MOUSE(0):MY=MOUSE(1)
10320 IF MX>=WINX(WIN)+181 AND MY>=WINY(WIN)+79 AND MX<=WINX(WIN)+231 AND MY<=WINY(WIN)+109 ELSE GOSUB *CONNECT:RETURN
10330 WEND
10340 '/*******************************************************************/
10350 PUT@A(WINX(WIN),WINY(WIN))-(WINX(WIN)+LONG_X(WIN),WINY(WIN)+LONG_Y(WIN)),FW,,,,,OFFSET(WIN) 'ウィンドウを見かけだけ消す。まだループは戻ってない。
10360 RETURN 'ループを戻し、完全にウィンドウを消す。
10380 '/*******************************************************************/
10390 RETURN
320行目は「確認」ボタンが放されているかどうかを確認するところですが、ここ
のGOSUBをGOTOに直します。さっきカットしてメモリに残しておいた部分を
ここでペーストします。
10260 *OK
10270 FOR I=0 TO 1
10280 LINE(WINX(WIN)+181+I,WINY(WIN)+79+I)-(WINX(WIN)+231-I,WINY(WIN)+109-I),PSET,%7,B
10290 NEXT
10300 X1=WINX(WIN)+181:Y1=WINY(WIN)+79:X2=WINX(WIN)+231:Y2=WINY(WIN)+109
10310 WHILE MOUSE(2,0)=-1:MX=MOUSE(0):MY=MOUSE(1)
10320 IF MX>=WINX(WIN)+181 AND MY>=WINY(WIN)+79 AND MX<=WINX(WIN)+231 AND MY<=WINY(WIN)+109 ELSE GOTO 10220
10330 WEND
これでGOSUBがGOTOに変更されましたので1個目のRETURNがメインル
ープに戻るRETURNになりました。(2個目のRETURNは要らないので消し
ておいてください。)
***裏技?***
ウィンドウを消すには次のサブルーチンをプログラムに付け加えると便利です。
100 *WINDOWERASE
110 PUT@A(WINX(WIN),WINY(WIN))-(WINX(WIN)+LONG_X(WIN),WINY(WIN)+LONG_Y(WIN)),FW,,,,,OFFSET(WIN)
120 WIN=WIN-1
130 RETURN
このサブルーチンは110行目でウィンドウを消して、120行目でウィンドウの表
示フラグを落とすという物です。
10340 '/*******************************************************************/
10350 PUT@A(WINX(WIN),WINY(WIN))-(WINX(WIN)+LONG_X(WIN),WINY(WIN)+LONG_Y(WIN)),FW,,,,,OFFSET(WIN) 'ウィンドウを見かけだけ消す。まだループは戻ってない。
10360 RETURN 'ループを戻し、完全にウィンドウを消す。
10380 '/*******************************************************************/
の代わりに
10340 '/*******************************************************************/
10350 GOSUB *WINDOWERASE
10360 RETURN 'ループを戻し、完全にウィンドウを消す。
10380 '/*******************************************************************/
としても構いません。
さてこれでウィンドウを自由に消したり出したり出来るようになりました。でも「G
UI Evolution」は1枚のウィンドウだけを出したり消したりするのでは
なく、メモリの許すかぎり何枚でもウィンドウを出せます。
次の章では複数のウィンドウを出したりすることを説明します。
完成したサンプル
SAMPLE¥SAMPLE3D.BAS
★第5章~ウィンドウは何枚も?★
ウィンドウを何枚も出すのは第4章の復習の様な物です。
サンプルではアバウトの中にもっと詳しく表示するボタンという物を作ってみました
(分け分からん^^;)。
SAMPLE¥SAMPLE4 .NG5
SAMPLE41.NG5
SAMPLE42.NG5
SAMPLE4 .BAS
まず復習として先程のマージのしかたでデスク型にウィンドウ型2つをマージします
。これで2つのウィンドウが使えるようになりました。そして
2820 *PULLNUMBER0
2830 FOR I=0 TO 1
2840 LINE(0+I,0+I)-(100-I,19-I),PSET,%1,B
2850 NEXT
2860 X1=0:Y1=0:X2=100:Y2=19
2870 N$(0)="About..."
2880 N$(1)="NULL"
2890 N$(2)="Quit"
2900 WDX=68:N=3
2910 GOSUB *PULLDOWNMENU
2920 GOSUB *CONNECT2
2930 IF A=0 THEN
2940 GOSUB *SAMPLE41
2950 ENDIF
2960 IF A=2 THEN
2970 END
2980 ENDIF
2990 RETURN
と変更します。(詳しくは↑参照。*SAMPLE41とは1枚目のウィンドウ)
今度はウィンドウの中に新しく設けた「詳細」というボタンを押すともう1枚のウ
ィンドウを表示させるように変更します。これも↑と同じで、
3550 *詳細表示
3560 FOR I=0 TO 1
3570 LINE(WINX(WIN)+127+I,WINY(WIN)+79+I)-(WINX(WIN)+177-I,WINY(WIN)+109-I),PSET,%7,B
3580 NEXT
3590 X1=WINX(WIN)+127:Y1=WINY(WIN)+79:X2=WINX(WIN)+177:Y2=WINY(WIN)+109
3600 WHILE MOUSE(2,0)=-1:MX=MOUSE(0):MY=MOUSE(1)
3610 IF MX>=WINX(WIN)+127 AND MY>=WINY(WIN)+79 AND MX<=WINX(WIN)+177 AND MY<=WINY(WIN)+109 ELSE GOSUB *CONNECT:RETURN
3620 WEND
3630 GOSUB *CONNECT
3640 GOSUB *SAMPLE42
3650 RETURN
と変更するだけです。
もう一個の「確認」ボタンの方はまるっきり第四章と同じなので省きます。
さて、先程「WIN」という変数にはウィンドウの枚数が入ると言いました。今度は
2枚目のウィンドウが表示されるわけですから、当然
3710 *SAMPLE42
3720 WIN=0
3730 WINX(WIN)=193
3740 WINY(WIN)=155
という所を、
3710 *SAMPLE42
3720 WIN=1
3730 WINX(WIN)=193
3740 WINY(WIN)=155
に変更しなければいけません。これで後はいつもと同じように変更してゆけばよいの
です。今回は「胡散臭いことを言うな!」ボタン^^;を押すと1枚前のウィンドウに戻
るようにします。でも基本的には変わっていなくて、今までのが
メイン→1枚目のウィンドウ→メイン
だったのが
メイン→1枚目のウィンドウ→2枚目のウィンドウ→1枚目のウィンドウ→メイン
になっただけです。でも、RETURNする前にウィンドウを画面から消したという
証拠(フラグを落とす)ことをしなければいけません。でもフラグを落とすのは簡単
で、
WIN=WIN-1
だけでいいのです。ということは、
4010 *RETURN1
4020 FOR I=0 TO 1
4030 LINE(WINX(WIN)+6+I,WINY(WIN)+160+I)-(WINX(WIN)+221-I,WINY(WIN)+184-I),PSET,%7,B
4040 NEXT
4050 X1=WINX(WIN)+6:Y1=WINY(WIN)+160:X2=WINX(WIN)+221:Y2=WINY(WIN)+184
4060 WHILE MOUSE(2,0)=-1:MX=MOUSE(0):MY=MOUSE(1)
4070 IF MX>=WINX(WIN)+6 AND MY>=WINY(WIN)+160 AND MX<=WINX(WIN)+221 AND MY<=WINY(WIN)+184 ELSE GOSUB *CONNECT:GOTO 3970
4080 WEND
4090 GOSUB *CONNECT
4100 PUT@A(WINX(WIN),WINY(WIN))-(WINX(WIN)+LONG_X(WIN),WINY(WIN)+LONG_Y(WIN)),FW,,,,,OFFSET(WIN)
4110 WIN=WIN-1
4120 RETURN
となるわけです。
・・・と基本的なウィンドウ操作は第四章で説明してしまったので、第五章は簡単に
終わってしまいました。では最後の章、「アラートを表示する」に挑戦します。
★終章~涙のアラート★
アラート型は警告メッセージ等を表示する為に使います。ウィンドウ型より簡単(と
いうか編集する部分がなひ(^^;・・・)
アラート型はマウスを少し動かしたり、クリックしたりすると消えます。アラートが
消えると勝手にRETURNしてくれますので、貴方ははほとんどただ呼び出すだけ
!の簡単操作になっています。
ただ、ウィンドウから呼び出す場合は、変数「WIN」に注意してください。
サンプル
SAMPLE¥SAMPLE5.NG5
SAMPLE5.BAS
SAMPLE5A.NG5
アラート型は変更する部分がほとんど無くて、ただウィンドウ型と同じようにマージ
して、GOSUB *ファイル名で呼び出すだけです。
あえていえば、ウィンドウ型を取り付けていない人は、プログラムの始めの方に
DIM FW(10000)
としておけば、後は勝手に動くでしょう(^^;。
そして、アラート表示中にマウスを動かしたりクリックしたりすればRETURNで
帰ってきます。
本当はプログラムを組める人ならアラートぐらい朝飯前に出来るのですが、High
-Cの方にもあることだし~とかいって付けたこの機能もまた意見なかったような気
がします。
なおこのアラートはキーボードには対応してませんが、プログラムを理解できる方な
らキーボードにも反応処理を付けてもらえると思います。(「GUI Evolut
ion」自体を改造しても良いですよ)
以上でテクニカルインフォメーションを終了します。もっと詳しく知りたい人等は私
のところに手紙を下さい。(説明書の下の方に住所をのせています。できるだけ詳し
く説明するとおもいますよ~(^^;、高校1年な私ですが、お気軽にどうぞ!)
□ファイルダイアログの操作
大体はTOWNS-OSと操作性を同じものにしています。
1┬────────────────────────────┐
├┴────────────────────────────┤
│┌┐12─┐┌┐4─────────────────┐┌┐│
││││ドラ│││└─────────────────┘└┘│
│2││イブ│3│┌─────────────────┐6┐│
│└┘└──┘└┘│ │├┤│
│ │ ││││
│ │ ││││
│ │ ││││
│ │ 5 │7││
│ │ ││││
│ │ ││││
│ │ ││││
│ └─────────────────┘8┤│
│ 11───────┐ └┘│
│ └────────┘ 9──┐10─┐│
│ └──┘└──┘│
└─────────────────────────────┘
1、ファイルダイアログを消します。
当然ファイルは選択されないで終了します。
2、3、ドライブを選びます。
ドライブの確認には
Luzz-tum様の「I/O 操作で広がる BASIC WORLD」のドライブGETのI/Oを使
用させてもらいました。
ドライブを選択したあと、ドライブのボタンを押さないとドライブが選択されま
せん(12番のボタン)
4、5番のリストに表示されていないファイルがあと何個あるかを表示します。
5、ファイルのリストです。ファイルを選択するときはここをマウスでクリックして
ください。
6、ファイルのリストを一つ上に上げます。
7、ファイルのリストをバーで表示した物です。このバーを押しながら上に上げたり
下げたりすると、自動的にファイルのリストも上下します。
8、ファイルのリストを一つ下に下げます。
9、ファイル名を取得して、ファイルダイアログを消します。
10、1番と同じ効果です。
11、ファイルダイアログが書き込みに使用されるならば、ここをクリックするとファ
イル名を入力出来ます。
12、2、3でドライブを選択したあと、このボタンを押すとリストが変更されます。
「GUI Evolution」のサポートライブラリとしてファイルダイアログも
配付しています。是非そちらの方もお使いください。
*****************注意*****************
GUI Evolutionを使用するに当たって、注意しなければいけないことを
書いておきます。
○ボタン数、プルダウンメニュー数
ボタンの数やプルダウンメニューの作れる数は決まっていて、ボタンが300個まで
、プルダウンメニュが20個までです。メモリが多い人用にプログラムを書き直せば
、1000個でも2000個でも大丈夫なのですが、一応4Mということで・・・。
○ハイレゾで作ったデータはローレゾでは読めない。
これはエラー処理が施されいるので問題はないですが、例えば、始めはハイレゾで作
っていたデータをローレゾ用に戻すことは不可能です。(逆なら可能)
○バグを発見してしまった場合(オイオイ)
お手数ですが、私に手紙をください。あと、こういう機能をつけてほしいというご意
見がございましたら、同じく手紙をください。送ってくれた人には懸賞として・・・
って私は会社に勤めているわけではないので、次回のツールが完成した場合、送らせ
ていただくぐらいしかできませんが(しかも出来るかどうかが怪しいところ)・・・
○文字入力には絶対「"」又は「,」を入れないで!
この文字を入れると、プログラムがファイルを読めなくなってしまいます。
どうしても入れたいときは全角で入れましょう。
*********次回予告 (なんかしてよいのだろうか)*********
GUI Evolutionには私が構想していた大体の機能(意味ないものも含め
て)は付け終えたのですが、まだ、あったほうがよい機能があります。もし次回作を
作るときには次の機能を付けていきたいと思います。
○機械語で画面を書くことによって高速化を実現する。(不可能です)
○なんとか2Mで動くようにする(絶対無理(;-;))
○いっそのことフルアセンブラ(絶対無理×1000000)
う~ん。ど~考えても実現しないような事ばかりだ~。とりあえず、当分次回作はつ
くらないかもしれません。(今回のでもう疲れた・・・)
実はいったん「GUI Evolution」完成!などと言っていたのですが、シ
ステムROMのデータを機械語なしで読めるという事を知ったので、早速改造を行い
ROMアイコンを使えるようにしました。アイコンはROMから読んでいるので、イ
ンタプリタで使う方は多少遅いかもしれませんが、コンパイルすれば非常に高速にな
ります。(どのくらい高速かというと、MXのBASICインタプリタでアイコンを
読むよりも、UXのBASICコンパイラでアイコンファイルを読む方が早い)
○ついに終わった。
終わった終わった。
今までは他人様の機械語を使わせてもらっていたのですが、今回は機械語なしで開発
をすすめました。
思っていたよりプログラムサイズが異常に大きくなってしまいました。それというの
も、あまりつかえそうにないハイレゾ機能とマウスエディタ機能を付けてしまったた
めです。ハイレゾ機能は、一部の機種でないと使えないから、もし使いたい人は自分
だけでつかうか、ハイレゾ用とローレゾ用を両方つくるしかないな~。さらに、完成
直前になって「NOI’z BASIC GUI SUPPORT LIBRARY
4と3」で作ったデータが読めなくなってもうた。というのも、↑のデータ保管が
完璧ではなかったので(スミマセンm(__)m)正しくコンバートされなくなってしまう
のです。(もしかしたらNG4、NG3>NG5用のコンバータをつくるかも・・・
って必要ないか^^;)
もしかしたら次回作にはハイレゾ機能がなくなるかもしれません。まあ、今回はつく
っちゃったから関係ないや!。(さあこのツールを使ってミニプログラムでもつくろ
ー)
○みなさんありがとう
このプログラムのデバッグをしてくれた皆さん、α版を受け取ってくれた皆さんどう
もありがとうございました。
参考:
文字入力機能に「SES」(SATT様の作品)
システムROMを読むルーチンに「BLB」(高梨 直樹様の作品)
使用可能ドライブの取得に「I/O 操作で広がる BASIC WORLD」(Luzz-tum様の作品)
Special Thanks:
Townes.Einsyutin.
みかん星人
茶川龍之介
こたつ猫
NOBUDEN
土井 毅さん
使用したツール:
F-BASIC386V2.1L10
F-BASIC386V2.1L20
WINDOWSのペイントツール
自作テキストエディタ「暴臭エディタV2.1L50」(未発表)
○終りに
このプログラムの著作権はNOI´z(高橋英彦)にありますが、このプログラムで
つくったプログラム(?)はフリコレ等にドシドシ応募してください!
でも、動作に関する保障はありません(大丈夫だと思うけどね)。
今回は本当に資金不足なのでシェアウェアにしようと思ったのですが、直接お金が儲
かるようなツールではないので止めました(でもメモリがほし~(T_T))。お布施は
大歓迎です(^^;;;;;;;;;;;;;;;;;;;;;;;;)
どうやら私はライバル(?)がいるかぎりGUIシリーズの進化をしてゆくつもりら
しいです(^^;。でも今回のヴァージョンで付けたい機能はほぼ付けたので、次回は
どうなることやら!?
使用レポートやご意見、ご希望、ご感想、質問等は是非ともお寄せ下さい。今後の開
発の参考にさせていただきます。
転載は大歓迎です。転載の場合は無変更のまま、説明書などと一緒にお願いします。
転載許可はとくに必要ありませんが、もしお暇なら、ご一報ください。(住所を載せ
ているので商用NET等にはご遠慮願います。)
改造についても貴方の環境にあわせてバリバリ変更してくださ~い。(ソースファ
イルの汚さに耐えられる人のみですけど。ちなみに私は耐えられません(オイオイ))
このソフトで作ったデータをフリコレに応募するときは、いちいち「GUI Ev
olution」を使用しました、なんて書かなくても結構です。(書いてくれると
凄く嬉しい)
感想、質問、グチ等は
*************************************
〒230
神奈川県横浜市鶴見区2-14-1
高橋英彦
「GUI Evolution」の係
*************************************
までお願いします!
Presented by NOI´z(高橋英彦)